/*
 * 父类型
 * */
class Parent {
    private static String pstr = "父类静态变量";
    static {
        System.out.println("执行父类静态代码块："+pstr);
    }
    public static String getPstr() {
        return Parent.pstr;
    }
    public Parent() {
        System.out.println("执行父类构造方法...");
    }
}

/*
 * 子类型
 * */
class Son extends Parent {
    private static String sstr = "子类静态变量";
    static {
        System.out.println("执行子类静态代码块：" + sstr);
    }
    public Son() {
        System.out.println("执行子类构造方法...");
    }
}

class MyThead extends Thread {

}

public class Test {
    public static void main(String[] args) {
        // 先将父类型载入内存(执行静态代码片段)
        // 后将子类型载入内存(执行静态代码片段)
        // 先执行父类型构造函数，后执行子类型构造函数
        Son son1 = new Son();
        // 先执行父类型构造函数，后执行子类型构造函数
        Son son2 = new Son();
        System.out.println("类静态代码块只会在加载该类时执行一次...");
    }
}